package com.github.cakin.shiro.chapter19.service;

import com.github.cakin.shiro.chapter19.entity.Organization;

import java.util.List;

/**
 * @className: OrganizationService
 * @description: 组织服务
 * @date: 2020/5/25
 * @author: cakin
 */
public interface OrganizationService {
    /**
     * 功能描述：创建组织
     *
     * @param organization 组织
     * @return Organization 组织
     * @author cakin
     * @date 2020/5/25
     */
    Organization createOrganization( Organization organization );

    /**
     * 功能描述：更新组织
     *
     * @param organization 组织
     * @return Organization 组织
     * @author cakin
     * @date 2020/5/25
     */
    Organization updateOrganization( Organization organization );

    /**
     * 功能描述：根据组织Id删除组织
     *
     * @param organizationId 组织Id
     * @author cakin
     * @date 2020/5/25
     */
    void deleteOrganization( Long organizationId );

    /**
     * 功能描述：根据组织Id查找一个组织
     *
     * @param organizationId 组织Id
     * @return Organization 组织
     * @author cakin
     * @date 2020/5/25
     */
    Organization findOne( Long organizationId );

    /**
     * 功能描述：查找组织列表
     *
     * @author cakin
     * @return List<Organization> 组织结构列表
     * @date 2020/5/25
     */
    List<Organization> findAll();

    /**
     * 功能描述：查找被排除的组织
     *
     * @param excludeOraganization 被排除组织
     * @author cakin
     * @return Object
     * @date 2020/5/25
     */
    Object findAllWithExclude( Organization excludeOraganization );

    /**
     * 功能描述：变更组织结构
     *
     * @param source 变更前组织
     * @param target 变更后组织
     * @author cakin
     * @date 2020/5/25
     */
    void move( Organization source, Organization target );
}
